package com.demo.java.OD351_400.OD385;

import java.util.Scanner;
import java.util.Stack;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最长合法表达式(C卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146240773
 */
public class OdMain {
    private static boolean isOperator(char c) {
        return c == '+' || c == '-' || c == '*' || c == '/';
    }

    private static boolean isValidExpBeginChar(char c) {
        return '0' <= c && c <= '9' || c == '+' || c == '-';
    }

    private static int calcExpStr(String expStr) {
        expStr += "+0";  // 末尾加0便于计算
        Stack<Integer> stack = new Stack<>();
        StringBuilder numStr = new StringBuilder();
        int num_coef = 1;  // 系数为1或者-1
        boolean beforeIsDiv = false;

        // 遍历表达式中的每个字符
        for (int i = 0; i < expStr.length(); i++) {
            char c = expStr.charAt(i);

            if ('9' >= c && c >= '0') {
                // 如果是数字，加入到数字字符串中
                numStr.append(c);
            } else {
                int num = num_coef * Integer.parseInt(numStr.toString());
                // 如果是除法，则先弹出栈中的元素，进行除法运算
                if (beforeIsDiv) {
                    stack.push(stack.pop() / num);
                } else {
                    stack.push(num);
                }
                beforeIsDiv = false;
                numStr.setLength(0);

                if (c == '+') {
                    num_coef = 1;  // 正数
                } else if (c == '-') {
                    num_coef = -1;  // 负数
                } else if (c == '*') {
                    num_coef = stack.pop();  // 乘法，更新系数为栈顶元素
                } else if (c == '/') {
                    num_coef = 1;  // 除法，系数为1
                    beforeIsDiv = true;  // 标记下一步为除法操作
                }
            }
        }

        // 返回栈中所有数字的和
        int sum = stack.stream().mapToInt(Integer::intValue).sum();
        return sum;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();  // 读取输入的数学表达式

        String[] subs = s.split("[^0-9+\\-*/]");  // 使用正则表达式提取所有合法的数学表达式

        String express = "";
        int maxLen = 0;

        // 遍历所有提取的子表达式
        for (String sub : subs) {
            int l = 0;

            while (l < sub.length() && !isValidExpBeginChar(sub.charAt(l))) {
                l++;  // 跳过无效字符
            }

            if (l == sub.length()) {
                continue;  // 如果没有合法的表达式，则跳过
            }

            sub += "++";  // 加上一个结束符

            int r = l + 1;
            while (r < sub.length()) {
                if (isOperator(sub.charAt(r)) && isOperator(sub.charAt(r - 1))) {
                    if (r - 1 - l > maxLen) {
                        String[] ts = sub.substring(l, r - 1).replace("/0", " 0").split(" ");
                        for (String tmp : ts) {
                            if (tmp.length() > maxLen) {
                                maxLen = tmp.length();
                                express = tmp;  // 更新最大表达式
                            }
                        }
                    }
                    l = r;
                    while (l < sub.length() && !isValidExpBeginChar(sub.charAt(l))) {
                        l++;
                    }
                    r = l;
                }
                r++;
            }
        }

        if (maxLen > 0) {
            int result = calcExpStr(express);  // 计算最大表达式的结果
            System.out.println(result);
        } else {
            System.out.println(0);  // 如果没有找到合法表达式，则输出0
        }
    }
}